package br.com.ds3.controller;

import java.util.List;

import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.view.Results;
import br.com.ds3.dao.GrupoDAO;
import br.com.ds3.dao.UsuarioDAO;
import br.com.ds3.model.Grupo;
import br.com.ds3.model.Usuario;

@Resource
public class GrupoController {
	private final Result result;
	private final GrupoDAO GrupoDAO;

	public GrupoController(Result result, GrupoDAO GrupoDAO) {
		this.result = result;
		this.GrupoDAO = GrupoDAO;
	}
 
    public void pesquisa(String identificacao, Long pagina) {
        Long paginas = GrupoDAO.countPaginas(identificacao);
    	List<Grupo> grupos = GrupoDAO.pesquisa(identificacao, pagina);
        
        result.include("identificacao", identificacao);
        result.include("pagina", pagina);
        result.include("paginas", paginas);
        result.include("grupos", grupos);
    }
    
    public void grava(Grupo grupo) {
    	GrupoDAO.save(grupo);    	
    	result.redirectTo(this).pesquisa(grupo.getIdentificacao(), null);
    }
    
    public void cadastro(Long id) {
    	Grupo grupo = null;    	
    	if (id != null) {
    		grupo = GrupoDAO.get(id);
    	} else {
    		grupo = new Grupo();
    	}
    	result.include("grupo", grupo);
    }
    
    public void inclui() {	
    	result.forwardTo(this).cadastro(null);
    }
    
    public void altera(Long id) {
    	result.forwardTo(this).cadastro(id);
    }
    
    public void exclui(Long id) {    	
    	GrupoDAO.delete(GrupoDAO.get(id));    	
    	result.use(Results.status()).ok();
    }
    
    public void pesquisaParticipante(String nome, Long pagina)
    {
    	UsuarioDAO individuoDAO = new UsuarioDAO();
        Long paginas = individuoDAO.countPaginas(nome);
    	List<Usuario> participantes = individuoDAO.pesquisa(nome, pagina);
        
        result.include("nome", nome);
        result.include("pagina", pagina);
        result.include("paginas", paginas);
        result.include("participantes", participantes);
    }
    
    public void incluiParticipante(Long idGrupo, Long idParticipante)
    {
    	System.out.println("pesquisa participante: " + idGrupo + " " + idParticipante );
    }
}
